package com.anrongtec.zcpt.openapi.interfaces;

import android.content.Context;

import com.anrongtec.zcpt.openapi.util.DeviceFactory;
import com.anrongtec.zcpt.openapi.util.GsonUtil;
import com.anrongtec.zcpt.openapi.util.Util;
import com.lzy.okgo.callback.AbsCallback;

/**
 * 接口封装类
 *
 * @author
 */
public class ShuJuInterface {

    private Context context;
    private String status;
    private String mPkgName;

    public ShuJuInterface(Context context) {
        super();
        this.context = context;
    }

    /**
     * 登录
     *
     * @param userName
     * @param pwd
     * @param callback
     */
    public void login(String userName, String pwd, int loginType, AbsCallback callback) {
        HttpUtil.postJson(ShuJuURL.getAPPOauthURL(), GsonUtil.toLoginJson(userName, pwd, loginType), callback);
    }

    /**
     * 检查APP是否具备统一认证权限
     *
     * @param appKey
     * @return
     */
    public String checkAppAuth(String appKey,String mPackageName) {
        // 向服务器请求是否具备认证权限，pkg、sha1、AK，返回应用授权。access_token
        String sha1 = Util.getCertificateSHA1Fingerprint(context);
//        boolean isFromThird = PreferenceUtils.getInstance().getBoolean(Constant.PREFERENCE.MISFROMTHIRD);
//        if (isFromThird) {
//            mPkgName = PreferenceUtils.getInstance().getString(Constant.PREFERENCE.MPKGNAME);
//            PreferenceUtils.getInstance().save(Constant.PREFERENCE.MISFROMTHIRD,false);
//        } else {
//            mPkgName = Util.getPackageName(context);
//        }
        String deviceId = DeviceFactory.getInstance(context).getDeviceUUID();
        String imei = DeviceFactory.getInstance(context).getIMEI();
        String json = HttpUtil.postJson(ShuJuURL.getAPPOauthURL(),
                GsonUtil.toAPPAuthJson(mPackageName, sha1, appKey, deviceId, imei), ShuJuURL.REQUEST_TAG);
        return json;
    }

    /**
     * 获取AccessToken，绑定AccessToken和用户，设备，应用
     *
     * @param appKey
     * @param token
     * @param idno
     * @return
     */
    public String getRefeshAccessToken(String pkg , String appKey, String token, String idno) {
        // 向服务器请求是否具备认证权限，pkg、sha1、AK，返回应用授权。access_token
        String sha1 = Util.getCertificateSHA1Fingerprint(context);
        String deviceId = DeviceFactory.getInstance(context).getDeviceUUID();
        String imei = DeviceFactory.getInstance(context).getIMEI();
        String json = HttpUtil.postJson(ShuJuURL.getAPPOauthURL(),
                GsonUtil.toRefeshAccessTokenJson(pkg, sha1, appKey, deviceId, imei, token, idno), ShuJuURL.REQUEST_TAG);
        return json;
    }

    /**
     * 验证是否具备验证权限，并刷新
     *
     * @param appKey
     * @param accessToken
     * @return
     */
    public String checkAppAuth(String appKey, String mPackageName,String accessToken) {
        // 向服务器请求是否具备认证权限，pkg、sha1、AK，返回应用授权。access_token
        String sha1 = Util.getCertificateSHA1Fingerprint(context);
//        boolean isFromThird = PreferenceUtils.getInstance().getBoolean(Constant.PREFERENCE.MISFROMTHIRD);
//        if (isFromThird) {
//            mPkgName = PreferenceUtils.getInstance().getString(Constant.PREFERENCE.MPKGNAME);
//            PreferenceUtils.getInstance().save(Constant.PREFERENCE.MISFROMTHIRD,false);
//        } else {
//            mPkgName = Util.getPackageName(context);
//        }
        String deviceId = DeviceFactory.getInstance(context).getDeviceUUID();
        String imei = DeviceFactory.getInstance(context).getIMEI();
        String json = HttpUtil.postJson(ShuJuURL.getAPPOauthURL(),
                GsonUtil.tocheckAuthJson(mPackageName, sha1, appKey, deviceId, imei, accessToken), ShuJuURL.REQUEST_TAG);
        return json;
    }

    /***
     *
     * @param accessToken  应用Token
     * @return
     */
    public String getStaffInfo(String accessToken) {
        // 向服务器请求是否具备认证权限，pkg、sha1、AK，返回应用授权。access_token
        String deviceId = DeviceFactory.getInstance(context).getDeviceUUID();
        String imei = DeviceFactory.getInstance(context).getIMEI();
        String json = HttpUtil.postJson(ShuJuURL.getAPPOauthURL(),
                GsonUtil.toGetStaffInfoJson(accessToken, deviceId, imei), ShuJuURL.REQUEST_TAG);
        return json;
    }

    /**
     * 统一认证登出
     *
     * @param accessToken
     * @return
     */
    // public String authLogout(String accessToken) {
    // // 向服务器请求是否具备认证权限，pkg、sha1、AK，返回应用授权。access_token
    // // String sha1 = Util.getCertificateSHA1Fingerprint(context);
    // // String pkg = Util.getPackageName(context);
    // // String deviceId = DeviceFactory.getInstance(context).getDeviceUUID();
    // String json = HttpUtil.postJson(ShuJuURL.getAuthLogoutURL(),
    // GsonUtil.toAuthLogoutJson(accessToken));
    // return json;
    // }

    /**
     * 刷新统一认证Token
     *
     * @param accessToken
     * @return
     */
    // public String refreshToken(String accessToken) {
    // String json = HttpUtil.postJson(ShuJuURL.getAPPCheckAuthURL(),
    // GsonUtil.toAuthLogoutJson(accessToken));
    // return json;
    // }
}
